package com.company.flyweight;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 网站工厂类，享元工厂角色，负责创建和缓存享元对象
 */
public class WebSiteFactory {

    /**
     * 缓存对象，key：模板，value：具体的网站
     */
    private Map<String,ConcreteWebSite> cache = new ConcurrentHashMap<>();


    /**
     * 根据模板获取网站
     * @param template
     * @return
     */
    public WebSite getWebSiteByTemplate(String template){

        if(cache.containsKey(template)){
            System.out.println("使用缓存 ===> " + template);
            return cache.get(template);
        }else {
            System.out.println("第一次查询，创建对象 ===> " + template);
            ConcreteWebSite site = new ConcreteWebSite(template);
            cache.put(template,site);
            return site;
        }
    }
    /**
     * 获取模板数量
     * @return
     */
    public int getWebsiteTemplateSize(){
        return cache.size();
    }

}
